package com.station.Activitys.activity;

import android.os.Handler;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.station.Activitys.R;
import com.station.Activitys.activity.base.BaseActivity;
import com.station.Activitys.bean.State;
import com.station.Activitys.http.manager.UserManager;
import com.station.Activitys.utils.CheckUtils;
import com.station.Activitys.utils.Constant;
import com.station.Activitys.utils.JumperUtils;
import com.station.Activitys.utils.ToastUtils;
import com.station.Activitys.utils.CacheManger;

import org.simple.eventbus.Subscriber;
import org.simple.eventbus.ThreadMode;

import butterknife.Bind;
import butterknife.OnClick;

/**
 * 项目名称：基站管理平台 手机app
 * 类描述：修改密码
 * 创建人：张飞祥
 * 创建时间：2018/9/7 15:16
 * 修改人：张飞祥
 * 修改时间：2018/9/7 15:16
 * 修改备注：
 */
public class PwdUpdateActivity extends BaseActivity {

    //返回按钮
    @Bind(R.id.iv_return)
    ImageView ivReturn;
    //标题
    @Bind(R.id.tv_title)
    TextView tvTitle;
    //原始密码
    @Bind(R.id.et_pwd_used)
    EditText etPwdUsed;
    //新密码
    @Bind(R.id.et_pwd_new)
    EditText etPwdNew;
    //确认新密码
    @Bind(R.id.et_pwd_confirm)
    EditText etPwdConfirm;

    //TODO 初始化网络请求
    public UserManager mApiManager;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_pwd_update);
        //网络请求接口 常驻方法
        mApiManager = mApiManager.getUserApiManager(this,this.getTaskId());
    }

    @Override
    protected void initData() {
        //获取 当前用户
        mUser = CacheManger.getUser(mACache);
        //设置标题
        tvTitle.setText("账号密码");
        //显示返回按钮
        ivReturn.setVisibility(View.VISIBLE);
    }

    /**
     * 按钮点击事件
     *
     * @return
     */
    @OnClick({R.id.iv_return,R.id.btn_submit})
    public void onClick(View view) {
        switch (view.getId()) {

            case R.id.iv_return:        //返回
                finish();
                break;

            case R.id.btn_submit:       //提交修改密码
                //开始网络请求
                setUpdatePwdHttp();
                break;
        }
    }

    /**
     * 开始修改密码 网络请求
     */
    private void setUpdatePwdHttp(){
        //旧密码
        String usedPwd = etPwdUsed.getText().toString();
        //新密码
        String newPwd = etPwdNew.getText().toString();
        //确认新密码
        String confirmNewPwd = etPwdConfirm.getText().toString();

        /**
         * 1.判断每个字段非空
         * 2.判断两次密码是否一致
         * 3.判断旧密码格式是否正确
         * 4.判断新密码格式是否正确
         * 5.开始网络请求
         */
        if (usedPwd.equals("") || newPwd.equals("") || confirmNewPwd.equals("")) {
            ToastUtils.showShort(this, "请您认真填写，内容不许为空！");
        }else if (!newPwd.equals(confirmNewPwd)) {
            ToastUtils.showShort(this, "两次密码输入不一致！");
        }else if (!CheckUtils.isPassword(usedPwd)) {
            ToastUtils.showShort(this, "旧密码格式不正确！");
        }else if (!CheckUtils.isPassword(newPwd)) {
            ToastUtils.showShort(this, "新密码格式不正确！");
        }else{
            initShowTimeDialog("正在修改，请稍后....", this);
            //开始网络请求
            mApiManager.userUpdatePwd(mUser.getId(),usedPwd,newPwd);
        }
    }

    /**
     * 网络请求 修改登录密码 报错
     */
    @Subscriber(tag = Constant.BUS_MY_UPDATE_PWD_ERROR, mode = ThreadMode.MAIN)
    public void initUpdatePwdError(String strError) {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //隐藏dialog
                mTimeDialog.dismiss();
                //弹出相应的提示
                ToastUtils.showShort(PwdUpdateActivity.this,"网络连接不稳定，请稍后重试！！！");
            }
        }, 1000);
    }

    /**
     * 网络请求 修改登录密码
     */
    @Subscriber(tag = Constant.BUS_MY_UPDATE_PWD, mode = ThreadMode.MAIN)
    public void initUpdatePwd(final State state) {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //隐藏dialog
                mTimeDialog.dismiss();
                //TODO 网络请求业务逻辑判断
                if (state.getState().equals("1")) {
                    //提示 dialog
                    MaterialDialog mMsgDialog = new MaterialDialog.Builder(PwdUpdateActivity.this)
                            .title("修改成功")
                            .content("恭喜您，密码已修改成功，请重新登录吧！")
                            .positiveText("立即登录")
                            .onPositive(new MaterialDialog.SingleButtonCallback() {
                                @Override
                                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                    //制空保存到本地的密码
                                    mACache.put(Constant.CACHE_LOGIN_PWD,"");
                                    //跳转登录页面
                                    JumperUtils.JumpTo(PwdUpdateActivity.this,LoginActivity.class);
                                    //销毁当前页面
                                    finish();
                                }
                            }).show();
                    // 设置点击屏幕Dialog不消失
                    mMsgDialog.setCanceledOnTouchOutside(false);
                    //取消Back键监听
                    mMsgDialog.setCancelable(false);
                }else{
                    //弹出相应的提示
                    ToastUtils.showShort(PwdUpdateActivity.this, state.getMsg());
                }
            }
        }, 1000);
    }
}
